[ Language Support ] [ FAQ ] [ Contributed Docs ] [ Members & Donors] [ Export DB ]

Modified on 2013-FEB-22
Chel Hee Lee

R 메시지의 한국어 지원 작업지침 및 품질관리 검증 프로그램

iHELP 프로젝트에서 R 메시지에 대한 한국어 지원 작업은 영어로 된 R을 한국어 사용자가 모국어로서 편리하고 더 빠른 작업을 돕기 위한 환경을 제공하기 위한 하나의 옵션을 제공하는 것입니다. 따라서 올바르고 정확한 메시지 번역이 요구되어 집니다 . R의 한국어 지원은 초기에 잠시 이루어졌다가 아쉽게도 R-2.8.x 버전까지 관리의 부재로 인하여 많은 기계적 퍼지가 누적되어 한국어버전의 R을 사용하는데 많은 어려움이 있다는 문제점이 제기되어 왓습니다. 이러한 문제를 해결하기 위하여 R-2.9.x 부터 R-2.14.x까지 R에서 사용되는 한국어 용어에 대한 데이터 베이스 구축과 번역된 메시지들에 대해서 품질관리 검증 프로그램이 진행되었습니다. 그리고 R-3.0.0 부터는 기존의 퍼지를 모두 제거하기 위하여 언어파일 전체를 모두 초기화한뒤 올바르게 검증된 메시지들만 추가하여 배포됩니다 (R-3.0.0 부터의 모든 작업 진행사항은 ihelp-translators 메일링 리스트와 알카이브를 이용하여 그 내용을 확인하시길 부탁드리며, 아래의 품질관리에 대한 설명을 참고부탁드립니다).

기본방침

메시지들에 대한 품질관리는 기본적으로 언어파일 초기화 이후 모든 메시지를 소스코드내에서 확인 및 검토작업을 한뒤, R의 도움말 파일과 함께 그 사용의 여부가 일치하는가에 대한 검증 작업을 거치게 됩니다. 이렇게 메시지의 품질이 확인이 된 것들만이 R 한국어 버전에 포함되게 됩니다.

  • 메시지들은 보통 에러, 경고, 중단, 지시사항, 그리고 패키지 설명과 관련되어 있습니다.
  • C로 짜여진 소스, R로 짜여진 소스, R 인터프리터와 관련된 부분, 그리고 인터페이스와 관련된 부분으로부터 메시지가 됩니다.
  • 의미가 불분명하거나, 왜곡될 수 있는 표현들은 퍼지가 되지 않고, 영문 그대로 출력이 되도록 처리합니다
  • R의 도움말 파일과 그 사용이 일치하도록 일부 메시지들은 추가설명을 가집니다
  • 따라서, iHELP 프로젝트의 기여자님들께서는 다음의 작업지침을 따라주시면 대단히 감사드리겠습니다. 본 프로젝트에서 요구되는 기술적 사항들 (즉, 설치, 수정 및 추가, 그리고 확인)에 대해서는 스스로 해결을 할 수 있어야 합니다. (그러나, 통일성, 시간절약 및 효율성을 높이기 위하여 필요한 모든 기술적 내용을 이곳에 기록할 것입니다). 아래의 작업지침이 지켜지지 않거나, 올바르게 번역되지 않은 메시지들, 그리고 메시지들만을 보고 단순번역을 통해 의미가 부정확하거나 오역된 메시들에 대해서는 통보 없이 해당 메시지가 삭제가 될 수 있음을 알려드립니다.

    작업세부 지침

    이 작업지침은 R(≥3.0.0) 부터 적용되며, 그 이전 버전들인 R(≤ 2.15.3)에는 적용되지 않고, 무시되어집니다 (ihelp-translators 메일링 리스트를 참고하세요). 총 24개의 작업도메인 (현재 2013년 2월 18일)이 있으나, 그 중에서 기본인 base 패키지를 예를 들어 설명합니다.

    1. 관련 소스트리를 iHELP 프로젝트로부터 다운받고, 아래의 경로로 들어갑니다.
      		cd /src/library/base/po/ 
      		
    2. ko.po 라는 파일을 열어봅니다. 복잡해 보일 수도 있으나, 다음과 같이 간단한 형식을 가지고 있음을 확인할 수 있습니다.
      		msgid "영어로 된 본래의 메시지가 있습니다"
      		msgstr ""
      		
      한국어 파일 (현재 2013년 2월 18일)은 초기화 되어 있기 때문에 msgstr 부분은 아무런 메시지도 없이 "" 라고 되어 있습니다 (이는 R-3.0.0 버전부터 가장 올바른 한국어 지원을 하기 위함입니다 ihelp-translators 알카이브를 확인하세요). 이러한 작업을 위해서 Fedora 그룹에서는 poEdit 이라는 소프트웨어를 추천합니다. 모든 작업파일은 UTF-8 인코딩으로 되어 있어야 합니다. 우리는 GNU gettext 를 이용합니다.
    3. msgid 에 있는 영어원문에 해당하는 올바른 한국어 번역을 위하여 조금더 구체적인 설명을 합니다. ko.po 파일의 맨 처음 두가지 메시지를 보도록 합니다.
      		msgid "REPORT must be > 0 (method = \"BFGS\")"
      		msgstr ""
      		
      		msgid "unknown 'type' in \"CG\" method of 'optim'"
      		msgstr ""
      		
      메시지들을 보고 바로 단순직역을 할 수도 있지만, 이러한 과정은 피해주시길 바랍니다 (이러한 메시지들이 발견이 되면 통보없이 삭제됩니다). 실제로 위의 메시지들은 최적화와 관련된 메시지로 R에서는 optim() 이라는 함수와 연관이 있습니다. 그리고, R은 optim.c이라는 C 언어로 작성된 코드를 이용하여 이를 수행합니다. 따라서, optim.c 소스코드를 열어보니다.

      	/*
      	 *  R : A Computer Language for Statistical Data Analysis
      	 *  Copyright (C) 1999-2012  The R Core Team
      	
      	(필요하지 않으므로 중간부분 생략)
      
      	 *  You should have received a copy of the GNU General Public License
      	 *  along with this program; if not, a copy is available at
      	 *  http://www.r-project.org/Licenses/
      	 */
      
      	(중요하지 않으므로 생략) 
      	
      	#include 
      	#include 	/* for the random number generation in
      						 samin() */
      	#include 
      	#include 	/* for Rprintf */
      
      	(중요하지 않으므로 생략)
      
      	void
      	vmmin(int n0, double *b, double *Fmin, optimfn fminfn, optimgr fmingr,
      				int maxit, int trace, int *mask,
      				double abstol, double reltol, int nREPORT, void *ex,
      				int *fncount, int *grcount, int *fail)
      	{
      		
      	(중요하지 않지만, 여기부터 코드를 잘 읽어야 함)
      
      			if (nREPORT <= 0)
      (136번째 줄)		error(_("REPORT must be > 0 (method = \"BFGS\")"));
      			l = (int *) R_alloc(n0, sizeof(int));
      			n = 0;
      	
      소스코드의 136번째 라인으로부터 첫번째 메시지를 확인할 수가 있습니다. 이때 단순히 "REPORT는 > 0"이라고 하거나 "REPORT는 0보다 커야 합니다" 라는 단순번역은 피해 주시길 부탁드립니다. 저 옆에 method 라는 것은 R 함수 optim() 의 입력인자입니다.
      	R	> args(optim)
      	function (par, fn, gr = NULL, ..., method = c("Nelder-Mead", 
      			"BFGS", "CG", "L-BFGS-B", "SANN", "Brent"), lower = -Inf, 
      			upper = Inf, control = list(), hessian = FALSE) 
      	NULL
      	
      따라서, 첫번째 메시지는 메시지는 아래와 같이 번역되어야 합니다.
      	msgid "REPORT must be > 0 (method = \"BFGS\")"
      	msgstr "method 에  \"BFGS\" 가 주어졌을때, REPORT 는 반드시 0 보다 큰 값이어야 합니다"
      	
      그럼, 두번째 메시지에 대해서 살펴봅니다. 이를 위해서는 R의 optim()의 도움말을 더 읽어보시고, 소스코드를 한 번 주의깊게 보아주세요.
      	void cgmin(int n, double *Bvec, double *X, double *Fmin,
      			 optimfn fminfn, optimgr fmingr, int *fail,
      			 double abstol, double intol, void *ex, int type, int trace,
      			 int *fncount, int *grcount, int maxit)
      	{
      		(별로 중요하지 않으니 생략) 
      
      			if (trace) {
      		Rprintf("  Conjugate gradients function minimizer\n");
      		switch (type) {
      		case 1:	    Rprintf("Method: Fletcher Reeves\n");	break;
      		case 2:	    Rprintf("Method: Polak Ribiere\n");		break;
      		case 3:	    Rprintf("Method: Beale Sorenson\n");	break;
      		default:
      (489번째 줄)				error(_("unknown 'type' in \"CG\" method of 'optim'"));
      		}
      	
      이 메시지는 optim.c에서 498번째 라인에서 확인이 가능합니다. 그리고 R의 도움말에는 'type' 에 대해서 아래와 같이 기록되어 있습니다.
           ‘type’ for the conjugate-gradients method. Takes value ‘1’ for the
                Fletcher-Reeves update, ‘2’ for Polak-Ribiere and ‘3’ for
                Beale-Sorenson.
      	
      따라서, 이 메시지는 아래와 같이 번역이 되어야 합니다.
      	msgid "unknown 'type' in \"CG\" method of 'optim'"
      	msgstr "'optim'에서 사용하는 method 옵션 중 \"CG\" 에서는 정해지지 않은 'type' 입니다 "
      	

    모든 메시지는 퀄리티 향상 (Quality Improvement) 프로그램에 의하여 확인되고 검정이 되고 있으나, R을 사용하시면서 현재 번역되어 있는 메시지들 중 오탈자, 좀 더 의미 있는 표현, 그리고, 더 나은 표현을 제안하고자 하시는 사용자님들께서는 망설임없이 gnustats@korea.gnu.org 로 그 내용을 보내주시면 다음 배포판에 정정 및 수정이 반영되게 됩니다

    다음은 메시지 번역에 있어서 기술적으로 주의해야 할 점과 도움이 되는 테크닉입니다.

  • 예제 제공 1
  • 예제 제공 2
  • 예제 제공 3
  • 번역 용어 대조표

    영문 추천 용어 상황에 따라서 다음을 제안
    type 타입 유형, 종류
    file association 파일결합
    candidate point 후보점
    argument 인자
    child process
    pipe connection
    session elpased time limit 세션 경과 시간 제한
    RNG
    seed
    load table 로드테이블